本文介紹在Linux平台管理MySQL Database,若需變更或忘記root帳號之密碼的解決方式
日常維運工作,最常遇到的就是配合資安單位的稽核規範;除了作業系統帳號本體外,資料庫系統帳號也須納入稽核重點事項,本文將以MySQL Database作為主題。實作相關資訊如下:
作業系統:Rat Hat Enterprise Linux 6.2 64 bit
MySQL root帳號之舊密碼:abcdefg
MySQL root帳號之新密碼:1234567
作業系統執行帳號:root
[更改MySQL root帳號之密碼]
更改密碼較常使用的方式有下列兩點:
1. 使用msyqladmin command,如下步驟
#<Old Password>為既有root帳號使用之密碼,<New Password>為欲更新之密碼,請自行更換
#mysqladmin -u root -p<Old Password> password <New Password>
mysqladmin -u root -pabcdefg password 1234567
後續即可使用新密碼進行登入
2. 透過DML進行異動
此步驟須登入MySQL Database,如下步驟
'##以下皆為System CLI模式##'
#mysql -u root -p<Old Password>
mysql -u root -pabcdefg
'##以下皆為MySQL CLI模式##'
#show and use database
show databases;
use mysql;
#show table of database, and use 'user' table
show tables;
select * from user;
#透過DML異動MySQL root帳號之密碼,下列步驟將全部異動MySQL root帳號之密碼
#<New Password>為欲更新之密碼,請自行更換
#update user set Password = password('<New Password>') where User = 'root';
update user set Password = password('1234567') where User = 'root';
#flush privileges
flush privileges;
exit;
再次登入即可使用新密碼進行登入
'##以下皆為System CLI模式##'
#mysql -u root -p<New Password>
mysql -u root -p1234567
[遺失MySQL root帳號之密碼]
當管理的主機、資料庫愈來愈多,密碼就要愈記愈多...
然而有一天遺失MySQL root帳號時,該如何處理?或許可參考下列大項:
a. 評估是否有Service impact,並將此狀況呈報上層
b. 安排資料庫停機時間,作業期間約5~10分鐘
c. 作業開始時,參考下列步驟:
'##以下皆為System CLI模式##'
#Shutdown MySQL daemon
/etc/init.d/mysqld stop
#Start MySQL daemon in Maintain mode
#skip-grant-tables causes the server to start without using the privilege system at all, which gives anyone with access to the server unrestricted access to all databases.
mysqld_safe --skip-grant-tables &
mysql -u root
'##以下皆為MySQL CLI模式##'
use mysql;
#<New Password>為欲更新之密碼,請自行更換
#update user set Password = password('<New Password>') where User = 'root';
update user set Password = password('1234567') where User = 'root';
flush privileges;
exit;
'##以下皆為System CLI模式##'
#Restart MySQL daemon
/etc/init.d/mysqld restart
d. 再次登入即可使用新密碼進行登入
'##以下皆為System CLI模式##'
#mysql -u root -p<New Password>
mysql -u root -p1234567